Cloud computing provides storage, compute, and other information technology (IT) services on demand. Over the years, many organizations have either moved all, or part of, their applications and services to a cloud to provide, or employed cloud solutions to dynamically adjust, the IT infrastructure by integrating computing services according to surges and peak demands.
A cloud computing environment provides computation, software, data access, and storage services. Cloud computing describes a new supplement, consumption, and delivery model for Information Technology (IT) services based on Internet protocols, and it typically involves provisioning of dynamically scalable and often virtualized resources.
Cloud computing providers deliver applications via the internet, which are accessed from web browsers, desktop and mobile apps. All software, e.g., business software, applications and data are stored on servers at a remote location (e.g., a computing data center).
As known, “virtual” and “cloud computing” concepts includes the utilization of a set of shared computing resources (e.g., servers) which are typically consolidated in one or more data center locations. For example, cloud computing systems may be implemented as a web service that enables a user to launch and manage computing resources (e.g., virtual server instances) in third party data centers.
Different computing resources may be created within a cloud computing infrastructure or data center. For example, a resource may include all the components necessary to run application software, and may include, e.g., UNIX, Linux, or Windows operating systems (O/S), middleware, and specific application software or data, as desired by a user.
Typically, dynamic provisioning of resources is employed to replicate capabilities and/or services in a distributed computing infrastructure such as in a cloud environment, to overcome potential disruptions in the capabilities and/or services. These resource allocations decisions are based on obtained systems-level performance information.
Current solutions to optimize resource allocation typically require establishing and setting a user-level private channel between application and a resource management module with network connections. With this existing approach, timely delivery of information is not guaranteed when computing resources are tight or network policy prevents creation of required ports. In addition, resource optimization is limited due to lack of correlated information in any guest operating system (O/S), application software, and/or hypervisor.
It would be highly desirable to provide for Cloud Computing Systems and their respective virtual machine hypervisors the ability to make resource management decisions using systems-level performance information in addition to application performance attributes.